#pragma once

#include <vector>
using namespace std;


typedef unsigned (__stdcall *PTHREAD_START) (void *);

#define WM_HASHRESULT (WM_USER+100)
#define WM_FINISH	  (WM_USER+101)
#define WM_PRO		  (WM_USER+102)

#define BEGINTHREADEX(psa, cbStackSize, pfnStartAddr, \
	pvParam, dwCreateFlags, pdwThreadId)                 \
	((HANDLE)_beginthreadex(                          \
	(void *)        (psa),                         \
	(unsigned)      (cbStackSize),                 \
	(PTHREAD_START) (pfnStartAddr),                \
	(void *)        (pvParam),                     \
	(unsigned)      (dwCreateFlags),               \
	(unsigned *)    (pdwThreadId)))

struct FileInf
{
	//UINT nFile;
	CString FilePaths;
	ULONGLONG ulFielSize;
};

struct ReadThreadData
{
	HWND hWnd;
	DWORD dwFileNum;
	vector<FileInf> FileInfs;
	DWORD volatile dwThreadNum;
};